package py.fpuna.ii.electiva2.eao;

import java.util.ArrayList;
import java.util.Iterator;
import py.fpuna.ii.electiva2.interfaces.CompraEAO;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import py.fpuna.ii.electiva2.entity.Compra;
import py.fpuna.ii.electiva2.dto.CompraDTO;
import py.fpuna.ii.electiva2.dto.ProductoDTO;
import py.fpuna.ii.electiva2.dto.ProveedorDTO;
import py.fpuna.ii.electiva2.entity.Producto;


/**
 *
 * @author lizg
 */
@Stateless
public class CompraEAOBean implements CompraEAO {
    @PersistenceContext
    private EntityManager em;

    public String create(CompraDTO compra, Producto prod) {
        Compra entidad = null;
        String retorno = null;

        try{
            entidad = new Compra();
            entidad.setCompCodigo(compra.getCompCodigo());
            entidad.setCompCantidad(compra.getCompCantidad());
            entidad.setCompProveedor(compra.getCompProveedor());
            entidad.setCompProducto(prod);
                    
            em.persist(entidad);
           
            retorno = "OK";
        }
        catch (Exception e){
            e.printStackTrace();
            retorno = e.getMessage();
	}

	return retorno;
    }

    public void edit(CompraDTO compra) {
        em.merge(compra);
    }

    public void remove(CompraDTO compra) {
        em.remove(em.merge(compra));
    }

    public CompraDTO find(Object id) {
        return em.find(CompraDTO.class, id);
    }

    public List<CompraDTO> findAll() {

        List<Compra> compList = em.createQuery("select object(o) from Compra as o").getResultList();

        List<CompraDTO> listC = new ArrayList<CompraDTO>();

        Iterator <Compra> itComp = compList.iterator();

        while(itComp.hasNext()){
            Compra compra = itComp.next();
            CompraDTO compdto = new CompraDTO();
            compdto.setCompCantidad(compra.getCompCantidad());
            compdto.setCompCodigo(compra.getCompCodigo());
            compdto.setCompProveedor(compra.getCompProveedor());


            ProductoDTO prod = new ProductoDTO();
            prod.setProdCodigo(compra.getCompProducto().getProdCodigo());
            prod.setProdCantidad(compra.getCompProducto().getProdCantidad());
            prod.setProdDescripcion(compra.getCompProducto().getProdDescripcion());
            prod.setProdPrecioCompra(compra.getCompProducto().getProdPrecioCompra());
            prod.setProdPrecioVenta(compra.getCompProducto().getProdPrecioVenta());


            ProveedorDTO prov = new ProveedorDTO();

            prov.setProvCodigo(compra.getCompProducto().getProdProveedor().getProvCodigo());
            prov.setProvDireccion(compra.getCompProducto().getProdProveedor().getProvDireccion());
            prov.setProvRazonSocial(compra.getCompProducto().getProdProveedor().getProvRazonSocial());
            prov.setProvTelefono(compra.getCompProducto().getProdProveedor().getProvTelefono());

            prod.setProdProveedor(prov);


            compdto.setCompProducto(prod);

            listC.add(compdto);
        }
        return listC;//Retorna una lista de compraDTO
    }

}
